<?php
class mcompania extends Model 
{
	private $mTableName = 'SC_Compania';
	
	public function __construct() 
	{
		parent::Model();
		$this->load->database();
		
	}

	function loadCompanyTrasladar()
	{
		     $this->db->where('EstadoCompania',1);
		
		     $result = $this->db->get($this->mTableName);
         
		     return $this->GetCompaniasArrayFromQueryResult($result);
	}
	
	function loadCompanyparaVentas()
	{
	
		    $this->db->where('EstadoCompania');
		    $result = $this->db->get($this->mTableName);
		    return $this->GetCompaniasArrayFromQueryResult($result);
	}
	
    public function loadCompaniaHistoricoWhere($where)
    {
    	
           $this->db->where_in('EstadoCompania', $where);
 
		   $result = $this->db->get($this->mTableName);
	       return $this->GetCompaniasArrayFromQueryResult($result);
	           
    }
    
    /**
     * 
     * Enter description here ...
     * @param unknown_type $where
     */
    public function loadCompaniasWhereIn($where)
    {
    	$this->db->where_in('IdServicio', $where);
    	$result = $this->db->get($this->mTableName);
    	return $this->GetCompaniasArrayFromQueryResult($result);
    }

    
     function LoadCompanyCantidad($cant,$id,$fecha1 = false,$fecha2 = false)
	 {
		if (strlen($this->session->userdata('inicio')) < 1) {
			
			$qresult = $this->db->get_where($this->mTableName, array($cant => $id,
		                                                             'EstadoCompania'=>0 
		                                                            )
		                                                           );
		  return $qresult->num_rows();                                                           
		}
		
		else{ 
		  $qresult = $this->db->get_where($this->mTableName, array($cant => $id,
		                                                           'EstadoCompania'=>0,
		                                                           'FechaUsrCompania >='=>$this->session->userdata('inicio'),
		                                                           'FechaUsrCompania <='=>$this->session->userdata('fin')    
		                                                             )); 
			return $qresult->num_rows();
		}
		
		return 0;
		
	} 
	
	function dgiiadd($data)
	{
		 
		   $this->db->insert('dgii', $data);
		   
	}
	
	
	function createCompania($nombre,$idservicio,$clasificacionS,$idjurisdiccion,$fechausr,$fechasys,$idusario,$idresponsable,$idprovincia,$telefono1,$telefono2,$email,$concta,$idusuarioinbo,$idUsuarioCSA)
	{
	
		$data=array('NombreCompania'=>$nombre,
					'IdServicio'=>$idservicio,
					'clasificacion_servicios'=>$clasificacionS, 
					'IdJurisdiccion'=>$idjurisdiccion,
					'FechaUsrCompania'=>$fechausr,
					'FechaSysCompania'=>$fechasys,
					'IdUsuario'=>$idusario,
					'IdResponsable'=>$idresponsable,
					'IdProvincia'=>$idprovincia,
					'Telefono1Compania'=>$telefono1,
					'Telefono2Compania'=>$telefono2,
					'EmailCompania'=>$email,
					'EstadoCompania'=>0,
					'idStatu'=>2,
					'Contacto'=>$concta,
					'idUsuarioInbound'=>$idusuarioinbo,
					'idUltimaEtapa '  => 4,
					'idUsuarioSCA'=>$idUsuarioCSA,
					'clasificacion_proceso'	=> 1,
		            'estatus_documento'     => 0);

	                $this->db->insert($this->mTableName, $data);
	
		return true;
		
	}
	
	
	
	function updateCompania($compania)
	{
		$nombre=$compania->getNombreCompania();
		$idservicio=$compania->getIdServicio();
		$clasificacion = $compania->getClasificacionS();
		$idjurisdiccion=$compania->getIdJurisdiccion();
		$fechausrcompania=$compania->getFechaUsrCompania();
		$fechasyscompania=$compania->getFechaSysCompania();
		$idusuario=$compania->getIdUsuario();
		$idresponsable=$compania->getIdResponsable();
		$idprovincia=$compania->getIdProvincia();
		$telefono1=$compania->getTelefono1Compania();
		$telefono2=$compania->getTelefono2Compania();
		$email=$compania->getEmailCompania();
		$contacto=$compania->getContacto();
	
		$data=array('NombreCompania'=>$nombre,
					'IdServicio'=>$idservicio,
				    'clasificacion_servicios'=>$clasificacion,
					'IdJurisdiccion'=>$idjurisdiccion,
					'FechaUsrCompania'=>$fechausrcompania,
					'FechaSysCompania'=>$fechasyscompania,
					'IdUsuario'=>$idusuario,
					'IdResponsable'=>$idresponsable,
					'IdProvincia'=>$idprovincia,
					'Telefono1Compania'=>$telefono1,
					'Telefono2Compania'=>$telefono2,
					'EmailCompania'=>$email,
					'EstadoCompania'=>0,
					'Contacto'=>$contacto);
		$this->db->where('IdCompania', $compania->getIdCompania());
        if ($this->db->update($this->mTableName, $data))
        {        
        	               
        	return true;
        }
        else return false;
		
	}
	
	function updateCompania2($id,$ids)
	{
		$data=array('EstadoCompania'=>$ids);
		$this->db->where('IdCompania', $id);
		 if ($this->db->update($this->mTableName, $data))
        {        
        	               
        	return true;
        }
            else return false;
	}
	
	function UpDateDos($id,$ara)
	{
		$this->db->where('IdCompania', $id);
		if ($this->db->update($this->mTableName, $ara)) {
			return true;
		}
		
		return false;
	}
	
	
	/**
	 * 
	 * Update Estatus Documentos
	 * @param unknown_type $data
	 * @param unknown_type $id
	 */
	public function upDateRegistroEstatus($estatusDocumento, $idCompania)
	{	
		$data = array('estatus_documento' => $estatusDocumento);
		
		$this->db->where('IdCompania', $idCompania);
		
		if($this->db->update($this->mTableName, $data)){
			return true;
		}
			return false;
	}
	
	function UpDateDosDgii($id,$ara)
	{
		$this->db->where('IdCompania',$id);
		if ($this->db->update('dgii',$ara)) {
			return true;
		}
		
		return false;
	}
	
 	public function updateRegistro($data,$id)
    {
    		$this->db->where('IdCompania', $id);
            $this->db->update($this->mTableName, $data); 
    }
    
	function loadCantidad()
	{
		$qresult = $this->db->get_where($this->mTableName);
		return $qresult->num_rows();
	}
	
   	function loadCantidadWhere($where)
	{
		$qresult = $this->db->get_where($this->mTableName,$where);
		return $qresult->num_rows();
	}

    function loadCantidadExples($data1,$data2)
	{
		$data = array(
		            'FechaUsrCompania <='=>$data1,
		            'FechaUsrCompania >='=>$data2,
		            'IdServicio'=>7
		             );
		
	
		$qresult = $this->db->get_where($this->mTableName,$data);
		return $qresult->num_rows();
	}
	
	function crearinicio()
	{
	    $result = $this->db->get($this->mTableName);
		$result = $this->GetCompaniasArrayFromQueryResult($result);
		foreach ($result as $k)
		{
			$id = $k->getIdCompania();
		}	
		
		return $id;
	}
	
	
	
	function octenerId($referencia,$fecha)
	{
		$qresult = $this->db->get_where($this->mTableName, array('NombreCompania'=>$referencia,'FechaUsrCompania'=>$fecha));	
	}
	
	function LoadCompaniaById($id_compania) 
	{
		$qresult = $this->db->get_where($this->mTableName, array('IdCompania' => $id_compania));		if ($qresult->num_rows() == 0)
		{
			return false;
		}	

			return new compania($qresult->row());
	}
		
	
	function CalcularDiast($fechapar,$fechaact)
	{

		$fechapar = explode(' ',$fechapar);
		$fechapar_arr=explode('-',$fechapar[0]);
		$fechapar_mk=mktime(0,0,0,$fechapar_arr[1],$fechapar_arr[2],$fechapar_arr[0]);
		$fechapar_mk=intval($fechapar_mk);

		$fechaact = explode(' ',$fechaact);
		$fechaact_arr=explode('-',$fechaact[0]);
		$fechaact_mk=mktime(0,0,0,$fechaact_arr[1],$fechaact_arr[2],$fechaact_arr[0]);
		$fechaact_mk=intval($fechaact_mk);

		$segundos_diferencia =$fechaact_mk-$fechapar_mk;
		$dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
		return  $dias_diferencia;

	}
	
	function LoadCompaniasByProvinciaId($id_provincia) 
	{
		
			$this->db->where('IdProvincia', $id_provincia);

			$result = $this->db->get($this->mTableName);

			if ($result->num_rows() == 0)
				return false;

			return $this->GetCompaniasArrayFromQueryResult($result);
	}
	
	function loadCompaniasWhere($where = false, $etapa = false, $start = false, $offset = false, $sortname = false, $sortorder = false)
	{
		 
		 if ($etapa != false){
		  	$this->db->or_where_in('idUltimaEtapa',$etapa);
		 }
		 
		  
	    if($offset != false){
               $this->db->limit($offset, $start);
         }
		      
		 if($sortname != false && $sortorder != false){
		        $this->db->order_by($sortname, $sortorder);
		 }
		 
		$qresult = $this->db->get_where($this->mTableName,$where);
		return $this->GetCompaniasArrayFromQueryResult($qresult);
		
	}
	
	
	function loadCompaniaCategoria($idEtapa)
	{
		 
         	$this->db->where_in('idUltimaEtapa', $idEtapa);
			$qresult = $this->db->get($this->mTableName); 
			
		    return $this->GetCompaniasArrayFromQueryResult($qresult);
		
	}
	
    public function loadCompaniasByIn($where = false, $idEtapa, $usuario = false) 
    {
         	if ($usuario != false) {
          		
		    	$this->db->where('IdUsuario', $usuario);
		    }
   
         	$this->db->where($where);
         	$this->db->where_in('idUltimaEtapa', $idEtapa);
            $result = $this->db->get($this->mTableName);
         	return $this->GetCompaniasArrayFromQueryResult($result);
         	
     }
     
	function LoadCompaniasByIdResponsable($idresponsable) 
	{
			$this->db->where('IdResponsable', $idresponsable);
			$this->db->like('EstadoCompania',0);
			$result = $this->db->get($this->mTableName);

			if ($result->num_rows() == 0)
				return false;

			return $this->GetCompaniasArrayFromQueryResult($result);
	}
	/**
	 * 
	 * Enter description here ...
	 * @param unknown_type $categoria
	 * @param unknown_type $data
	 * @param unknown_type $start
	 * @param unknown_type $offset
	 * @param unknown_type $sortname
	 * @param unknown_type $sortorder
	 */
	public function loadCompaniesByCategory($categoria, $start = false, $offset = false, $sortname = false, $sortorder = false, $etapa = false)
	{
		if ($etapa != false){
		  	$this->db->where('idUltimaEtapa',$etapa);
		}
		
		if($offset != false){
               $this->db->limit($offset, $start);
         }
		      
		 if($sortname != false && $sortorder != false){
		        $this->db->order_by($sortname, $sortorder);
		 }
		 
		$qresult = $this->db->get_where($this->mTableName, $categoria);
		
		return $this->GetCompaniasArrayFromQueryResult($qresult);
	}
	
          /**
           * Valida el idUltimaEtapa que sea = que el ultimo proceso 
           * en la ultima etapa
           * 
           * @param type $idCompania
           * @param type $etapa
           */
          function inserEtapaActual($idCompania= false, $etapa = false)
          {
                    $this->db->where('IdCompania', $idCompania);
		$data = array('idUltimaEtapa' => $etapa);
		$this->db->update($this->mTableName, $data);
          }


          function colorLoadCompani($ser,$mod,$r)
	{
		$compa = $this->LoadCompanias();
		//$modelo = $this->mmodeloservicios->loadModeloServicios();
		   
		foreach ($compa as $k)
		{
			$dias = $this->CalcularDiast($k->getFechaUsrCompania(),date('Y-m-d'));
			$por = $dias * 100;
			$por = $por / $ser[$k->getIdServicio()]; 
			$data[] = '';
			   if ($r == 'v') {			   	
			   	    if ($por < $mod[1]) {
				      $data[] = $k->getIdCompania();
			       }
			   }
			   elseif ($r == 'a')
			   {
			   	  if ($por >= $mod[1] && $por <= $mod[2] ) {
			   	  	 $data[] = $k->getIdCompania();
			   	  }
			   }
			   else
			   {
			   	  if ($por > $mod[2] ) {
			     $data[] = $k->getIdCompania();
			    }
			   }
		}
		return $data;
	}
	
	function loadCompaniasArray($deli = false,$nombre = false, $start = false, $offset = false, $sortname = false, $sortorder = false){
		
	   if($sortname != false && $sortorder != false) {
			$this->db->order_by($sortname, $sortorder);
		  }
		  
		  $this->db->or_where_in('IdCompania',$deli);  	  
          $result = $this->db->get($this->mTableName);

          return $this->GetCompaniasArrayFromQueryResult($result);
	}
	
	function loadCompaniasArrayByCi($data,$_referencia = false,$start = false, $offset = false, $sortname = false, $sortorder = false)
	{
		 if($sortname != false && $sortorder != false) {
			$this->db->order_by($sortname, $sortorder);
		  }
		  
		  if ($_referencia != false) {
		      $this->db->like('NombreCompania',$_referencia);
		  }
		  
	       if($offset != false){
		    	$this->db->limit($offset, $start);
		   }
		  
		  $this->db->or_where_in('IdCompania',$data);  	  
          $result = $this->db->get($this->mTableName);

          return $this->GetCompaniasArrayFromQueryResult($result);
          
	}
	
	function LoadCompanias($start = false, $offset = false, $sortname = false, $sortorder = false, $nombre = false, $etapa = false)  
	{
		  if ($etapa != false){
		  	$this->db->or_where_in('IdCompania',$etapa);
		  }
		      
		   if($sortname != false && $sortorder != false){
		   	 $this->db->order_by($sortname, $sortorder);
		   } 
			      

			if ($nombre != false){
				$this->db->like('NombreCompania',$nombre);
			}    
                
		    if($offset != false){
		    	$this->db->limit($offset, $start);
		    }
		   
		
		   //$this->db->where('EstadoCompania',0);
		   //$this->db->limit(50, 50);
		
		   $result = $this->db->get($this->mTableName);
         
		    return $this->GetCompaniasArrayFromQueryResult($result);
	}
          
          public function controlInternoData($etapa =false, $sortname =false, $sortorder =false, $nombre=false, $qtype=false,$rp =FALSE, $listado =FALSE, $true =FALSE)
          {
                if ($etapa != false){
		  	$this->db->or_where_in('idUltimaEtapa',$etapa);
		  }
		      
		   if($sortname != false && $sortorder != false){
		   	 $this->db->order_by($sortname, $sortorder);
		   } 
			
                        if($rp != false) $this->db->limit($rp,$listado);

                    if ($nombre != false){
				$this->db->like($qtype,$nombre);
			}    
                
                               $result = $this->db->get($this->mTableName);
                              
              if( $true == FALSE){

                return $this->GetCompaniasArrayFromQueryResult($result);
                
          }  else {
          
              return $result->num_rows();
              
          }
          
          
          }




          function LoadCompaniasEtapas( $etapa = false , $usuario = false, $fDesde = false , $fHasta = false)  
	{
		  if ($etapa != false){
		  	$this->db->where('idUltimaEtapa',$etapa);
		  }
                      
                      if ($usuario != false){
		  	$this->db->where('IdUsuario',$usuario);
		  }
                      
                      if($fDesde != FALSE and $fHasta != False){
                          
                      $this->db->where('FechaSysCompania >',"$fDesde");
                      $this->db->where('FechaSysCompania <',"$fHasta");
                      }
                      
                      

		   $result = $this->db->get($this->mTableName);
         
		    return $this->GetCompaniasArrayFromQueryResult($result);
	}
          
          
          
	
    function LoadCompaniasExcel($nombre = false, $etapa = false, $usuario = false)  
	{
		
		    
		   if ($nombre != false){
				$this->db->like('NombreCompania',$nombre);
		   }    
                
		   if ($etapa != false){
		  	 $this->db->or_where_in('idUltimaEtapa',$etapa);
		   }

		   if($usuario != false){
		   	
		   	$this->db->where('IdUsuario',$usuario);
		   }
		   
		   $result = $this->db->get($this->mTableName);
         
		   return $this->GetCompaniasArrayFromQueryResult($result);
		   
	}
	
	public function loadCompaniaByDataArray($arrayData)
	{
		 $result = $this->db->get_where($this->mTableName, $arrayData);
		  return $this->GetCompaniasArrayFromQueryResult($result);	   
	}
	
	//cargar conpania para el reporte
	
	function LoadCompanyReport($id = false){
              if ($id == 3) {
         
              	$this->db->where('EstadoCompania',0);
              	$this->db->or_where_in('EstadoCompania',1);
              }else{
              	 $this->db->where('EstadoCompania',$id);
              }
		    
			
			 
		$result = $this->db->get($this->mTableName);
		return $this->GetCompaniasArrayFromQueryResult($result);
	}
	
	function LoadCompanyReport2($fecha1,$fecha2){
             
              	$this->db->where('EstadoCompania !=',0); 
              	 $this->db->where('FechaSysCompania >=',$fecha1);
	            $this->db->where('FechaSysCompania <=',$fecha2); 
        
	 
		$result = $this->db->get($this->mTableName);
		return $this->GetCompaniasArrayFromQueryResult($result);
	}
	
	function LoadCompanyArray()
	{
		$this->db->like('EstadoCompania',0);
		$result = $this->db->get($this->mTableName);
	    $var = $this->GetCompaniasArrayFromQueryResult($result);
	    
	    foreach ($var as $j)
	    {
	    	$var2[] = $j->getIdCompania();
	    }
	    
	    return $var2;
	}

	function LoadCompanias2($nombre = false, $start = false, $offset = false, $sortname = false, $sortorder = false) 
	{
        $this->db->like('EstadoCompania',0);
	    $result = $this->db->or_where_in('IdCompania',$nombre);
	    
		$result = $this->db->get($this->mTableName);
		return $this->GetCompaniasArrayFromQueryResult($result);
	}

	
	function GetCount($nombre = false, $tipo = false, $jurisdiccion = false) 
	{
		return count($this->LoadCompanias($nombre, $tipo, $jurisdiccion));
	}
	
  
	function GetCompaniasArrayFromQueryResult($result) 
	{
			if ($result->num_rows() == 0)
			{
				return false;
			}	

			$companias_arr = array();

			foreach ($result->result() as $record) 
			{
				$companias_arr[]=new compania($record);
			
			}
			
			return $companias_arr;
    }
    
    function Delete($id_compania) 
    {		$data=array('EstadoCompania'=>2);
            $this->db->where('IdCompania',$id_compania);
			return $this->db->update($this->mTableName,$data);
	}
	
	public function eliminar($id)
	{
		 if($this->db->delete($this->mTableName, array('IdCompania' => $id))){
		 	return true;
		 }
		 
		 return false;
	}
		
	function finalizar($id)
	{
		$compania=$this->LoadCompaniaById($id);
		$nombre=$compania->getNombreCompania();
		$idservicio=$compania->getIdServicio();
		$idjurisdiccion=$compania->getIdJurisdiccion();
		$fechausrcompania=$compania->getFechaUsrCompania();
		$fechasyscompania=$compania->getFechaSysCompania();
		$idusuario=$compania->getIdUsuario();
		$idresponsable=$compania->getIdResponsable();
		$idprovincia=$compania->getIdProvincia();
		$telefono1=$compania->getTelefono1Compania();
		$telefono2=$compania->getTelefono2Compania();
		$email=$compania->getEmailCompania();
		
	
		$data = array('NombreCompania'        => $nombre,
					  'IdServicio'            => $idservicio,
					  'IdJurisdiccion'        => $idjurisdiccion,
					  'FechaUsrCompania'      => $fechausrcompania,
					  'FechaSysCompania'      => $fechasyscompania,
					  'IdUsuario'             => $idusuario,
				 	  'IdResponsable'         => $idresponsable,
					  'IdProvincia'           => $idprovincia,
					  'Telefono1Compania'     => $telefono1,
					  'Telefono2Compania'     => $telefono2,
					  'EmailCompania'         => $email,
					  'EstadoCompania'        => '1');
		
		$this->db->where('IdCompania', $compania->getIdCompania());
        if ($this->db->update($this->mTableName, $data))
        {
        	return true;
        }
	}
	/**
	 * 
	 * CARGA LA CANTIDAD DE REGISTROS TODAS LAS COMPANIAS FILTRADAS 
	 * POR LAS ETAPAS: EJ: {INICIAL, FIRMA Y DATOS}
	 * 
	 * @param arary $filtroSemana
	 * @param array $filtroEtapas
	 * 
	 * @author Algenis Volquez
	 * 
	 * @return int
	 */
	 public function loadCountCompaniasByStage($filtroSemana = array(), $filtroEtapas = array(), $idUsuario = 0, $count = true)
	 {
	 	$this->db->where_in('idUltimaEtapa', $filtroEtapas);
		$this->db->where('FechaSysCompania >=',$filtroSemana['inicial']);
		$this->db->where('FechaSysCompania <=',$filtroSemana['final']);
		
		if($idUsuario != 0){
			
			$this->db->where('idUsuarioSCA', $idUsuario);
		}
		
		$result = $this->db->get($this->mTableName);
		
		if($count == false){
			return $this->GetCompaniasArrayFromQueryResult($result);
		}else{
			return $result->num_rows();
		}
	 }

	 
	public function loadCantidadCompaniesPorGestor($filtroSemana = array(), $categoria= 0, $idUsuario = 0)
	 {
	 	if($categoria != 0){
	 		$this->db->where('clasificacion_proceso', $categoria);
	 	}
		$this->db->where('FechaSysCompania >=',$filtroSemana['inicial']);
		$this->db->where('FechaSysCompania <=',$filtroSemana['final']);
		$this->db->where('idUsuarioSCA', $idUsuario);
	
		$result = $this->db->get($this->mTableName);
		
		return $result->num_rows();

	 }
	
	/**
	 * 
	 * CARGA LAS COMPANIAS MAS VIEJAS DEPENDIENDO DEL USUARIO GESTOR Y LAS SEMANAS Y
	 * DEL LIMITE, ORDENANDOLAS DE FORMA ASCENDENTE...
	 * 
	 * @param int $countCompany
	 * @param array $filtroSemana
	 * @param int $filtroUsuario
	 * 
	 * @author Algenis Volquez
	 * 
	 * @return array
	 */
	public function loadOlderCompaniesByUserAndWeek($filtroSemana = "", $filtroUsuario = 0, $countCompany = 5, $idCategoria)
	{				

		$this->db->where('clasificacion_proceso', $idCategoria);
		$this->db->where('FechaSysCompania >=',$filtroSemana);
		$this->db->where('EstadoCompania', 0);
		
		if($filtroUsuario != 0){
			$this->db->where('idUsuarioSCA', $filtroUsuario);
		}
		$this->db->order_by('FechaSysCompania', 'ASC');
		
		$this->db->limit($countCompany, 0);
		$result = $this->db->get($this->mTableName);
		
		return $this->GetCompaniasArrayFromQueryResult($result); 
		
	}
	/**
	 * 
	 * Enter description here ...
	 * @param unknown_type $filtroSemana
	 * @param unknown_type $countCompany
	 * @param unknown_type $idCategoria
	 * 
	 * @author Algenis Volquez
	 */
    public function loadOlderCompaniesByWeek($filtroSemana = "", $countCompany = 5, $idCategoria)
	{		

		
		$this->db->where('clasificacion_proceso', $idCategoria);
		$this->db->where('FechaSysCompania >=',$filtroSemana);
		$this->db->where('EstadoCompania', 0);
		
		$this->db->order_by('FechaSysCompania', 'ASC');
		
		$this->db->limit($countCompany, 0);
		$result = $this->db->get($this->mTableName);
		
		return $this->GetCompaniasArrayFromQueryResult($result); 
	}
	/**
	 * 
	 * ACTUALIZA EL ID DE LA ULTIMA ETAPA EN LA QUE SE ENCUENTRA LA COMPANIA 
	 * @param int $idCompania
	 * @param int $idEtapa
	 * 
	 * @author Algenis Volquez
	 */
	public function setIdUltimaEtabaByCompania($idCompania, $idEtapa, $clasificacionProceso)
	{
		$data = array('idUltimaEtapa' => $idEtapa,
					  'clasificacion_proceso' => $clasificacionProceso);
		
		$this->db->where('IdCompania', $idCompania);
		$this->db->update($this->mTableName, $data);
	}
	/**
	 * 
	 * ACTUALIZA EL ID DEL GESTOR DE INBOUND RESPONSABLE DE LA COMPANIA 
	 * @param int $idCompania
	 * @param int $idUsuarioSca
	 * 
	 * @author Algenis Volquez
	 */
	public function setIdUsuarioScaByCompania($idCompania, $idUsuarioSca)
	{
		$data = array('idUsuarioSCA' => $idUsuarioSca);
		
		$this->db->where('IdCompania', $idCompania);
		$this->db->update($this->mTableName, $data);
	}
	/**
	 * ESTE METODO TRAE LA UNION DE TODAS LAS COMPANIAS ACTIVAS Y LAS COMPANIAS EN HISTORICO
	 * RECIBE UN ARRAY POR PARAMETRO PARA FILTRAR LOS RESULTADOS
	 * 
	 * @author Algenis Volquez
	 */
	public function loadAllCompanias($data = false){
		if($data == true){
			$this->db->where($data);	
		}
		if($result = $this->db->get('SC_Vista_todasCompanias')){
			return $this->GetCompaniasArrayFromQueryResult($result);	
		}else{
			return false;
		}
	}
	

	
	/**
	 * 
	 * Actualiza el idUltimaEtapa y clasificacion_proceso en el que 
	 * se encuentra la compania actualmente
	 * @param unknown_type $idUltimaEtapa
	 * @param unknown_type $idClasificacionProceso
	 * @param unknown_type $idCompania
	 * 
	 * @author Algenis Volquez
	 */
	public function updateLastStage($idUltimaEtapa, $idClasificacionProceso, $idCompania)
	{
		$data = array('idUltimaEtapa' => $idUltimaEtapa,
					  'clasificacion_proceso' => $idClasificacionProceso);
		
		$this->db->where('IdCompania', $idCompania);
		$this->db->update($this->mTableName, $data);
	}
	
 	public function loadOlderCompaniasByStage($filtroSemana = false, $filtroEtapas = false, $limit = 5)
	 {
	 	$this->db->where_in('idUltimaEtapa', $filtroEtapas);
	 	
	 	if($filtroSemana != false){
	 		$this->db->where('FechaSysCompania >=',$filtroSemana);
	 	}
		
		$this->db->order_by('FechaSysCompania', 'ASC');
		$this->db->limit($limit, 0);
		
		$result = $this->db->get($this->mTableName);
		
		return $this->GetCompaniasArrayFromQueryResult($result);

	 }
	 
	 /**
	  * 
	  * RETORNA UN ARRAY DE OBJETOS DE LAS COMPANIAS DE ACUERDO DEL FILTRO DE LA 
	  * CONSULTA
	  * @param array $dataWhere //aqui van las columnas que queremos filtrar para la consulta
	  * @param int $limit
	  * 
	  * @author Algenis Volquez
	  */
	 public function getCompaniasByWhere($dataWhere = false, $filtroSemana = false, $orderBy = false, $limit = false)
	 {
	 	if($dataWhere != false){
	 		$this->db->where($dataWhere);
	 	}
	 	if($filtroSemana != false){
	 		$this->db->where($filtroSemana);
	 	}
	 	if($orderBy != false){
	 		$this->db->order_by($orderBy[0], $orderBy[1]);
	 	}
	 	if($limit != false){
	 		$this->db->limit($limit, 0);
	 	}
	 	
	 	$results = $this->db->get($this->mTableName);
	 	
	 	return $this->GetCompaniasArrayFromQueryResult($results);
	 }
}

class compania
{
    private $midcompania;
    private $mnombrecompania;
    private $midservicio;
    private $midjurisdiccion;
    private $fechausrcompania;
    private $fechasyscompania;
    private $idusuario;
    private $idresponsable;
    private $idprovincia;
    private $telefono1compania;
    private $telefono2compania;
    private $emailcompania;
    private $contato;
    private $EstadoCompania;
    private $docFacturo;
    private $docRecibo;
    private $idUsuarioSCA;
    private $_idUltimaEtapa;
    private $_Sclasificacion;
    private $_estatus_documentos;
    
     function compania($compania)
    {
    	$this->setIdCompania($compania->IdCompania);
    	$this->setNombreCompania($compania->NombreCompania);
    	$this->setIdServicio($compania->IdServicio);
    	$this->setClasificacionS($compania->clasificacion_servicios);
    	$this->setIdJurisdiccion($compania->IdJurisdiccion);
    	$this->setFechaUsrCompania($compania->FechaUsrCompania);
    	$this->setFechaSysCompania($compania->FechaSysCompania);
    	$this->setIdUsuario($compania->IdUsuario);
    	$this->setIdResponsable($compania->IdResponsable);
   		$this->setIdProvincia($compania->IdProvincia);
    	$this->setTelefono1Compania($compania->Telefono1Compania);
    	$this->setTelefono2Compania($compania->Telefono2Compania);
    	$this->setEmailCompania($compania->EmailCompania);
    	$this->setContacto($compania->Contacto);
    	$this->setEstadoCompania($compania->EstadoCompania);
    	$this->setFactura($compania->docFactura);
    	$this->setRecibo($compania->docRecibo);
    	$this->setIdUsuarioSca($compania->idUsuarioSCA);
        $this->_idUltimaEtapa = $compania->idUltimaEtapa;
        $this->setEstatusCompania($compania->estatus_documento);
    }
     
    function setIdCompania($idcompania)
    {
    	$this->midcompania=$idcompania;
    }
    
     function getIdCompania()
    {
    	return $this->midcompania;
    }
    
     function setNombreCompania($nombrecompania)
    {
    	$this->mnombrecompania=$nombrecompania;
    }
    
     function getNombreCompania()
    {
    	return $this->mnombrecompania;
    }
    
    function setIdServicio($idservicio)
    {
    	$this->midservicio=$idservicio;
    }
    
     function getIdServicio()
    {
    	return $this->midservicio;
    }
    
     function setIdJurisdiccion($idjurisdicion)
    {
    	$this->midjurisdiccion=$idjurisdicion;
    }
    
     function getIdJurisdiccion()
    {
    	return $this->midjurisdiccion;
    }
    
     function setFechaUsrCompania($fechausercompania)
    {
    	$this->fechausrcompania=$fechausercompania;
    }
    
     function getFechaUsrCompania()
    {
    	return $this->fechausrcompania;
    }
    
     function setFechaSysCompania($fechasyscompania)
    {
    	$this->fechasyscompania=$fechasyscompania;
    }
    
     function getFechaSysCompania()
    {
    	return $this->fechasyscompania;
    }
  
     function setIdUsuario($idusuario)
    {
    	$this->idusuario=$idusuario;
    }
    
     function getIdUsuario()
    {
    	return $this->idusuario;
    }
    
     function setIdResponsable($idresponsable)
    {

    	$this->idresponsable=$idresponsable;
    }
    
     function getIdResponsable()
    {
    	return $this->idresponsable;
    }
    
     function setIdProvincia($idprovincia)
    {
    	$this->idprovincia=$idprovincia;
    }
    
     function getIdProvincia()
    {
    	return $this->idprovincia;
    }
    
     function setTelefono1Compania($telefono1compania)
    {
    	$this->telefono1compania=$telefono1compania;
    }
    
     function getTelefono1Compania()
    {
    	return $this->telefono1compania;
    }
    
     function setTelefono2Compania($telefono2compania)
    {
    	$this->telefono2compania=$telefono2compania;
    }
    
     function getTelefono2Compania()
    {
    	return $this->telefono2compania;
    }
    
     function setEmailCompania($emailcompania)
    {
    	$this->emailcompania=$emailcompania;
    }
    
     function getEmailCompania()
    {
    	return $this->emailcompania;
    }
    
    function setContacto($emailcompania)
    {
    	$this->contato=$emailcompania;
    }
    
     function getContacto()
    {
    	return $this->contato;
    }
    
    
    function setEstadoCompania($emailcompania)
    {
    	$this->EstadoCompania=$emailcompania;
    }
    
     function getEstadoCompania()
    {
    	return $this->EstadoCompania;
    }
    
    
    function setFactura($emailcompania)
    {
    	$this->docFacturo=$emailcompania;
    }
    
     function getFactura()
    {
    	return $this->docFacturo;
    }
    
    function setRecibo($emailcompania)
    {
    	$this->docRecibo=$emailcompania;
    }
    
     function getRecibo()
    {
    	return $this->docRecibo;
    }
    function getIdUsuarioSca()
    {
    	return $this->idUsuarioSCA;
    } 
    
    function setIdUsuarioSca($idUsuarioSca)
    {
    	$this->idUsuarioSCA =$idUsuarioSca;
    }
    
    function getIdUltimaEtapa()
    {
    	 return $this->_idUltimaEtapa;
    }
    
    public function setClasificacionS($clasificacion)
	{
		$this->_clasificacionS = $clasificacion;
	}
	
	public function getClasificacionS()
	{
		return $this->_clasificacionS;
	}
	
	public function getEstatusCompania()
	{
		return $this->_estatus_documentos;
	}
	
	public function setEstatusCompania($estatus_compania){
		
		$this->_estatus_documentos = $estatus_compania;
		
	}
}